import 'package:flutter/material.dart';
import 'package:flutter_house_manager/api/user.dart';
import 'package:flutter_house_manager/utils/Emitter.dart';

import 'package:get/get.dart';

import '../../conctroller/UserInfoController.dart';
import '../../utils/TokenManager.dart';

class MineView extends StatefulWidget {
  const MineView({super.key, this.activeIndex});

  final int? activeIndex;

  @override
  State<MineView> createState() => _MineViewState();
}

class _MineViewState extends State<MineView> {
  UserInfoController controller = Get.put(UserInfoController()); // 从Getx中获取实例

  @override
  void initState() {
    super.initState();
    registerEvent();
  }

  registerEvent() {
    // 如果这个事件触发 意味着登录成功
    emitter.on<LogSuccessEvent>().listen((params) {
      getUserInfo();
    });
  }

  getUserInfo() async {
    final res = await getUserInfoAPI();
    controller.updateUserInfo(res); // 更新Getx中数据
    // userInfo = res;
    // setState(() {}); // 让UI具备响应式
  }

  @override
  void didUpdateWidget(covariant MineView oldWidget) {
    super.didUpdateWidget(oldWidget);

    // 判断传入的索引 == 1
    if (widget.activeIndex == 1) {
      // 要获取用户信息
      getUserInfo();
    }
  }

  // 返回用户头像
  Widget getUserAvatar() {
    if (controller.userInfo["avatar"] != "" &&
        controller.userInfo["avatar"] != null) {
      return Image.network(
        controller.userInfo["avatar"],
        width: 50,
        height: 50,
        fit: BoxFit.cover,
      );
    }
    return Image.asset(
      'assets/images/avatar_1.jpg',
      width: 50,
      height: 50,
      fit: BoxFit.cover,
    );
  }

  String getUserNickName() {
    if (controller.userInfo["nickName"] != "" &&
        controller.userInfo['nickName'] != null) {
      return controller.userInfo["nickName"];
    }
    return "用户名";
  }

  // 构建头部信息区域
  Widget _buildHeaderSection() {
    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 15),
      color: const Color(0xFF78B1C5),
      child: Row(
        children: [
          // 头像
          ClipRRect(
            borderRadius: BorderRadius.circular(25),
            child: getUserAvatar(),
          ),
          const SizedBox(width: 15),
          // 用户名
          Text(
            getUserNickName(),
            style: const TextStyle(
              color: Colors.white,
              fontSize: 18,
              fontWeight: FontWeight.bold,
            ),
          ),
          const Spacer(),
          // 完善信息按钮
          GestureDetector(
            onTap: () {
              // 完善信息点击事件
              Navigator.pushNamed(context, '/profile');
            },
            child: const Row(
              children: [
                Text(
                  '完善信息',
                  style: TextStyle(
                    color: Colors.white,
                    fontSize: 14,
                  ),
                ),
                Icon(
                  Icons.chevron_right,
                  color: Colors.white,
                  size: 20,
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }

  // 构建功能列表区域
  Widget _buildFunctionList() {
    return Container(
      margin: const EdgeInsets.all(15),
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(10),
      ),
      child: Column(
        children: [
          _buildFunctionItem(
            icon: 'assets/images/house_profile_icon@2x.png',
            title: '我的房屋',
            onTap: () {
              // 我的房屋点击事件
            },
          ),
          const Divider(height: 1),
          _buildFunctionItem(
            icon: 'assets/images/repair_profile_icon@2x.png',
            title: '我的报修',
            onTap: () {
              // 我的报修点击事件
            },
          ),
          const Divider(height: 1),
          _buildFunctionItem(
            icon: 'assets/images/visitor_profile_icon@2x.png',
            title: '访客记录',
            onTap: () {
              // 访客记录点击事件
            },
          ),
        ],
      ),
    );
  }

  // 构建单个功能项
  Widget _buildFunctionItem(
      {required String icon,
      required String title,
      required VoidCallback onTap}) {
    return InkWell(
      onTap: onTap,
      child: Padding(
        padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 20),
        child: Row(
          children: [
            Image.asset(
              icon,
              width: 24,
              height: 24,
            ),
            const SizedBox(width: 15),
            Text(
              title,
              style: const TextStyle(
                fontSize: 16,
                color: Colors.black87,
              ),
            ),
            const Spacer(),
            const Icon(
              Icons.chevron_right,
              color: Colors.grey,
              size: 20,
            ),
          ],
        ),
      ),
    );
  }

  _logout() {
    showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: const Text("提示"),
            content: const Text("确定退出登录吗？"),
            actions: [
              TextButton(
                onPressed: () {
                  // 取消退出登录
                  Navigator.of(context).pop();
                },
                child: const Text("取消"),
              ),
              TextButton(
                onPressed: () async {
                  // 确定退出登录
                  await TokenManager().removeToken(); // 删除本地token

                  Navigator.of(context).pop(); // 关闭对话框
                  // 2. 跳转到登录页面
                  Navigator.of(context).pushNamed('/login');
                },
                child: const Text("确定"),
              ),
            ],
          );
        });
  }

  Widget? _buildBottom() {
    if ((controller.userInfo["id"] as String).isEmpty) {
      return const SizedBox(height: 0);
    }
    return SizedBox(
      height: 60,
      width: double.infinity,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          GestureDetector(
              onTap: () {
                // 退出登录
                _logout();
              },
              child: const Text(
                "退出",
                style: TextStyle(color: Colors.red, fontSize: 18),
              )),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return GetBuilder<UserInfoController>(
      builder: (controller) {
        return Scaffold(
          backgroundColor: const Color(0xFF78B1C5),
          body: SafeArea(
            top: false, // 让背景色侵入顶部安全区域
            child: Column(
              children: [
                // 添加一个标题区域，替代AppBar
                Container(
                  width: double.infinity,
                  padding: EdgeInsets.only(
                    top: MediaQuery.of(context).padding.top +
                        10, // 状态栏高度 + 额外padding
                    bottom: 10,
                  ),
                  child: const Center(
                    child: Text(
                      "我的",
                      style: TextStyle(
                        color: Colors.white,
                        fontSize: 18,
                        fontWeight: FontWeight.bold,
                      ),
                    ),
                  ),
                ),
                _buildHeaderSection(),
                _buildFunctionList(),
                _buildBottom() ?? const SizedBox(),
              ],
            ),
          ),
        );
      },
    );
  }
}
